TOP

SQL TOP、LIMIT、FETCH FIRST、および ROWNUM

SQL SELECT TOP 説明

式 SELECT TOP は、選択するレコードの数を指定するために使用されます。

SQL SELECT TOP は、多数のレコードを返すとシステムのパフォーマンスに影響を与える可能性があるため、数千のレコードを含む大規模なテーブルに役立ちます。


すべてのデータベース システムが SELECT TOP 式をサポートしているわけではありません。 MySQL は、限られた数のレコードを選択するための式 LIMIT をサポートしていますが、Oracle は FETCH FIRST n ROWS ONLY および ROWNUM を使用します。

SQL サーバー / MS アクセス 構文:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition

MySQL 構文:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number

Oracle 12 構文:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY

非推奨の Oracle 構文:

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number

廃止された Oracle 構文 (ORDER BY を使用):

SELECT *
FROM (SELECT column_name(s) FROM table_name ORDER BY column_name(s))
WHERE ROWNUM <= number

デモデータベース

以下は、「Northwind」データベースの「Customers」(「Customers」) テーブルのサンプルです。

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

SQL TOP、LIMIT、および FETCH FIRST の例

次の SQL ステートメントは、「Customers」テーブル (SQL Server/MS Access の場合) から最初の 3 つのレコードを選択します。

SELECT TOP 3 * 
FROM Customers

次の SQL ステートメントは、MySQL の同等の例を示しています。

Run SQLSELECT * 
FROM Customers 
LIMIT 3

次の SQL ステートメントは、Oracle の同等の例を示しています。

SELECT * 
FROM Customers 
FETCH FIRST 3 ROWS ONLY

SQL TOP PERCENT の例

次の SQL ステートメントは、「Customers」テーブル (SQL Server/MS Access の場合) からレコードの最初の 50% を選択します。

SELECT TOP 50 PERCENT * 
FROM Customers

次の SQL ステートメントは、Oracle の同等の例を示しています。

SELECT * 
FROM Customers 
FETCH FIRST 50 PERCENT ROWS ONLY

WHERE 式の使用

次の SQL ステートメントは、国が「Germany」であるテーブル「Customers」から最初の 3 つのレコードを選択します (SQL Server/MS Access の場合)。

SELECT TOP 3 * 
FROM Customers 
WHERE Country = 'Germany'

次の SQL ステートメントは、MySQL の同等の例を示しています。

Run SQLSELECT * 
FROM Customers 
WHERE Country = 'Germany' 
LIMIT 3

次の SQL ステートメントは、Oracle の同等の例を示しています。

SELECT * 
FROM Customers 
WHERE Country = 'Germany' 
FETCH FIRST 3 ROWS ONLY